Project & Issu 11

모델링 작업

※ 실제 테이블 구조가 아닌 이해를 돕기 위해 간단하게 재구성 한 구조 입니다.이해를 돕기 위해 변경 전 테이블 구조를 먼저 보여주고 고도화 요구사항을 설명하고 변경한 테이블 구조에 대해서 설명합니다.index, 데이터 양을 중점으로 생각해서 테이블을 설계하였습니다.마지막에는 index에 대해서 정리한 내용을 설명합니다.  변경 전 테이블 구조 흐름 1. 고객 정보를 등록 2. 메신저를 보낸다      -> 소통 내용 태이블에 INSERT      -> 소통 ID를 고객별 마지막 소통 ID 컬럼에 UPDATE 3. 고객별 대화 내용 조회      (쉽게 말해서 카카오톡에서 대화 목록을 보여준다고 생각하면 된다. 대화 목록에는 마지막으로 연락한 메세지 내용이 보인다.)      -> 소통 내용에 많은 데이..

Project & Issu 2025.01.22

오라클 PL SQL 마이그레이션

CREATE OR REPLACE PROCEDURE "P_TEST" IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello from P_TEST');END;/마이그레이션 시 생각 못 했던 사항을 정리  - 마이그레이션 할 데이터 조회시 ID로 ORDER BY를 해준다.    -> 어디까지 완료된건지, 문제가 어디서 터진건지 확인 가능    -> 마이그레이션 할 데이터 조회 시점 이후에 추가된 데이터가 있는 경우 추가로 작업하기 편하다. - 마이그레이션 쿼리를 PL SQL로 하는 경우 에외나 문제 포인트에 ROLLBACK 처리를 해준다.    ->  DB 툴에서 설정해놓은 대로 ROLLBACK 되는 경우가 있는데,  툴에 의존하지 않고 ROLLBACK 할 수 있도록 예외 처리 코드를 넣어줘야..

Project & Issu 2024.06.18

feign client 버그 - java.lang.IllegalArgumentException: name is required

- 원인 : feign client로 통신할 때 파라미터 값에 (@RequestParameter String name ) '&'이 포함되어있으면 발생 - 해결 : @RequestBody를 사용해서 값을 넘겨준다. package com.....; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.anno..

Project & Issu 2024.02.29

csv 파일 인코딩 문제

1.한글 문제 [문제] UTF-8로 인코딩해서 CVC 파일 출력 시 한글이 깨지는 문제 [해결] Microsoft Office EXCEL.exe 프로그램으로 csv 파일을 실행했을 때 'ANSI'라는 인코딩 방식으로 자동 인식한다. 'UTF-8'로 인코딩 된 파일을 'ANSI'로 읽으면 한글이 깨진다. 따라서 MS949로 인코딩 해서 출력한다. private void download(String pathFileNamee, resultList) { try (CSVPrinter csvPrinter = new CSVPrinter( new BufferedWriter( new OutputStreamWriter( new FileOutputStream(pathFileName, true), "MS949"/*Standa..

Project & Issu 2024.01.05

좋아요 기능 동시성 처리

요약 : 좋아요 service에 redis 분산 락 처리를 하여 동시성 테스트 완료 1차 커밋 : feat : 좋아요 기능 추가(redis를 사용한 동시성 처리, queryDSL 사용), board test code 추가 · jeoningu/Springboot-JPA-Blog@3726ea1 (github.com) 1. 좋아요 service 멀티쓰레드 동작시 갱신손실 문제 동시성 처리를 해주지 않으면 좋아요 service를 테스트 코드에서 멀티쓰레드로 동작시켰을 때 동시성 테스트에 통과하지 못 합니다. 동시성 테스트를 해봤을 때 아래 로그에서 볼 수 있듯이 여러 쓰레드로 한 자원에 대해서 update를 하려고 할 때 이전 쓰레드에서 update를 하기 전 값을 select함으로써 이전 쓰레드에서 updat..

Project & Issu 2023.05.04

게시판 개인 프로젝트 JPA 이슈 해결 - N+1, LazyInitializationException

서론 JPA를 사용하면 연관관계를 갖는 엔티티에 의해 N+1 문제가 생긴다고 하던데, 게시판 개인 프로젝트에서도 게시물 목록을 조회 시 N+1 문제가 발생했다. 추가적으로 연관관계에서 성능을 위해 FetchType을 EAGER 보단 LAZY로 변경하는 걸 권장하길래 글 엔티티와 댓글 엔티티 연관관계에서 FetchType을 LAZY로 변경했더니 게시글 글 조회 시 LazyInitializationException 으로 인한 500Error가 발생했다. 위 2가지 문제 상황에 대해서 해결해보자. "배운점 선 요약"에서 주요 학습 내용 요약을 보고 "버그 내용", "처리 내용 및 결과"의 상단 부분을 보면 된다. 자세한 내용은 ""에 작성하였다. 게시판 개인 프로젝트에서 소스 참조 : https://githu..

Project & Issu 2023.05.02

토이 프로젝트에 적용할 기능, 기술에 대한 기록 - 알림 기능, 요청에 대한 이력 적재 기능, maven -> gradle

두서 없이 작성 중. 아직 정리가 안 되어 있는 상태. 작성 배경 프로젝트에 적용할 기능, 기술에 대한 기록용 정리 하면서 작성하는게 아니라 일단 기록하기 위해 작성 기능목록 1. 알림 기능 2. 요청에 대한 이력 적재 기능 3. Maven vs Gradle 4. jpa n+1 문제 해결 프로젝트 주소 jeoningu/Springboot-JPA-Blog (github.com) 서론 - 알림 기능을 구현해보려 하는데, 어떻게 구현해야 할지 정리가 필요하고 관련된 내용들도 추가적으로 학습해서 정리해보려 한다. - Runnable, BlockingQueue로 구현된 기능에 대해서 작업한 적이 있는데, 알림 개발시에 참고할 수 있을 거 같아서 우선 이것들을 학습해보려고 한다. 학습하기 위해 참고할 블로그 목록을..

Project & Issu 2023.03.27